[r73]: / Monitor1 / CODESYS_Control_Win_V3 / Plc Logic / Application / Сontrol / Freq_Control / svnobj  Maximize  Restore  History

Download this file

81 lines (80 with data), 28.9 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
VisuElems.g_ClientManager.BeginIteration();
	IF pClient^.GlobalData.ClientType = VisuElems.Visu_ClientType.WebVisualization THEN
		_VisuFbClientTagDataHelper(pClientData := pClient);
		i := STRING_TO_UINT(_VisuFbClientTagDataHelper.stName);
		IF i > 0 AND i <= FR_NUM THEN
			u := i;
			VisuElems.CURRENTVISU := DEF_VIZU;
		END_IF
	END_IF
END_WHILE
	FOR i := 1 TO Freq_Control.FR_NUM DO // check connection to server
			cTCP_RTU[i].xEnable := FALSE;  // reconnect need in next cycle
			bMBFault[i] := TRUE;
tonClientTCP(IN := TON_recon, PT := T_CL_RST);
FOR i := 1 TO Freq_Control.FR_NUM DO
	cTCP_RTU[i]();
				cTCP_RTU[i].xEnable := FALSE;  // reconnect need in next cycle
				bMBFault[i] := TRUE;
				(*IF wErrCount[i] < MB_CRASH THEN
					wErrCount[i] := wErrCount[i] + 1;
				ELSIF wErrCount[i] >= MB_CRASH THEN
					bMBFault[i] := TRUE;
				END_IF*)
			END_IF
		ELSE
			wErrCount[i] := 0;
			bMBFault[i] := FALSE;
	ELSE // not execute
		IF eReqState[i] = FIRST_REQ THEN
			eReqState[i] := INPUTS_REQ;
			pI^.ReadInputs();
			CONTINUE;
		ELSIF eReqState[i] = INPUTS_REQ THEN
			bTemp[i] := pI^.IsRemote();
			IF bTemp[i] <> bRemote[i] THEN
				eReqState[i] := REMOTE_SET;
				pI^.SetRemote(bTemp[i]);
				CONTINUE;
			ELSE
				eReqState[i] := STATUS_REQ;
		ELSIF eReqState[i] = REMOTE_SET THEN
				eReqState[i] := REMOTE_SETF;
				pI^.SetRemoteF(bTemp[i]);
		ELSIF eReqState[i] = REMOTE_SETF THEN
			eReqState[i] := STATUS_REQ;
			bRemote[i] := bTemp[i];
		ELSIF eReqState[i] = STATUS_REQ THEN
			eReqState[i] := ERROR_REQ;
			pI^.ReadStatus();
		ELSIF eReqState[i] = ERROR_REQ THEN
			pI^.CheckStart();
			IF pI^.GetError() <> NO_ERROR THEN
				bFreqFault[i] := TRUE;
				eReqState[i] := RESET_REQ;
				pI^.ResetDriver();
				bFreqFault[i] := FALSE;
				eReqState[i] := FREQ_GET_REQ;
				pI^.ReadFreqRef();
		ELSIF eReqState[i] = RESET_REQ THEN
			eReqState[i] := FIRST_REQ;
		ELSIF eReqState[i] = FREQ_GET_REQ THEN
			eReqState[i] := FREQ_SET_REQ;
			pI^.ReadFreqAct();
		ELSIF eReqState[i] = FREQ_SET_REQ THEN
			wFreqAct[i] :=  pI^.GetFreqAct();
			wFreqRef[i] :=  pI^.GetFreqRef();
			eReqState[i] := CONTROL_REQ;
		ELSIF eReqState[i] = CONTROL_REQ THEN
			IF i = u THEN // active PUMP group
				IF pI^.StopRotation(NOT bStartKey[i]) OR
						pI^.StartRotation(bStartKey[i]) OR
						pI^.SetFreq(wFreqNew[i]) THEN
					wUserID := DWORD_TO_WORD(VisuElems.CurrentUserGroupId);
					eReqState[i] := STATUS_REQ;
					CONTINUE;
				ELSE
					eReqState[i] := FIRST_REQ;
				END_IF
	IF bEnable[i] AND Ifdrv[i].IsConnected() THEN
		Ifdrv[i].NetRefresh();~